package com.datang.litejvm.cmd;


import com.datang.litejvm.constant.ConstantPool;
import com.datang.litejvm.engin.ExecutionResult;
import com.datang.litejvm.engin.Heap;
import com.datang.litejvm.engin.JavaObject;
import com.datang.litejvm.engin.StackFrame;

public class BiPushCmd extends OneOperandCmd {


    public BiPushCmd(ConstantPool pool, String opCode) {
        super(pool, opCode);
    }

    @Override
    public String toString() {
        return super.toString();
    }

    /**
     * @author: 顶风少年
     * @Description: 将一个 byte 类型数据入栈
     * 将 byte 带符号扩展为一个 int 类型的值 value，然后将 value 压入到操作
     * 数栈中。
     * @date: 21:59 2022/6/16
     **/
    @Override
    public void execute(StackFrame frame, ExecutionResult result) {
        int value = this.getOperand();
        JavaObject javaObject = Heap.getInstance().newInt(value);
        frame.getOperandStack().push(javaObject);
    }
}
